Computer systems typically include a combination of computer programs and hardware, such as semiconductors, transistors, chips, circuit boards, storage devices, and processors. The computer programs are stored in the storage devices and are executed by the processors. A common feature of many computer systems is the transfer of data between hardware components. This transfer may be performed by a central processing unit (CPU) or it may be performed by a process known as direct memory access (DMA) in which a hardware unit accesses memory independently of the CPU.